package com.jt808.decode.model;

import com.jt808.decode.constant.AlarmTypeEnum;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Location Data
 *
 * @author Mr.Li
 * @date 2023-03-03
 */
@Data
public class Location {
    /**
     * Terminal S/N
     */
    private String terminalNum;

    /**
     * Default 0x0200
     */
    private String hexMsgId;

    /**
     * Message sequence number of the current 0x0200 message
     */
    private int msgFlowId;

    /**
     * GPS Status (0:Not positioned; 1:GPS positioning)
     */
    private Integer locationType=-1;

    /**
     * ACC Status (V effective)
     */
    private Integer acc = -1;

    /**
     * latitude(WGS84)
     */
    private Double lat;

    /**
     * longitude(WGS84)
     */
    private Double lon;

    /**
     * altitude(Unit: m)
     */
    private Integer altitude;

    /**
     * speed(Unit:km/h)
     */
    private Double speed;

    /**
     * direction(0~360;0:North)
     */
    private Integer direction;

    /**
     * mileage(Unit:km)
     */
    private Double mileage= 0.0;

    /**
     * Base station cell code set(mcc,mnc,lac,ci,rssi)
     */
    private List<String> lbsCells;

    /**
     * Device data packaging time(GMT+0)
     */
    private String gnssTime;

    /**
     * Server receiving data time(GMT+0)
     */
    private String recvTime;

    /**
     * Battery Percentage
     */
    private Integer battery = 0;

    /**
     * voltage(Unit:V)
     */
    private Double voltage = 0.0;

    /**
     * Mobile Network Signal Strength
     */
    private Integer gsmValue = 0;

    /**
     * GNSS Number of Positioning Satellites
     */
    private Integer gnssValue = 0;

    /**
     * Alarm type enumeration set
     */
    private List<AlarmTypeEnum> alarmTypeList = new ArrayList<>();

    /**
     * Map of the current device status
     */
    private Map<String,Integer> statusMap;

    /**
     * Map of device expansion information
     */
    private Map<String,Object> expandMap;

    /**
     * The command that the platform needs to respond to the device
     */
    private String replyMsg;
}
